package cn.com.dycc.sys_manage.usersysmanagement.dao;


import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import cn.com.dycc.sys_manage.usersysmanagement.entity.Conver;
import cn.com.dycc.sys_manage.usersysmanagement.entity.NewUser;
import cn.com.dycc.sys_manage.usersysmanagement.entity.User;
import cn.com.dycc.sys_manage.usersysmanagement.entity.UserIndexResult;
import cn.com.dycc.sys_manage.usersysmanagement.entity.UserInfo;
import cn.com.dycc.sys_manage.usersysmanagement.entity.UserInfoAccount;
import cn.com.dycc.sys_manage.usersysmanagement.entity.UserPart;
import cn.com.dycc.sys_manage.usersysmanagement.entity.UserResult;
import cn.com.dycc.sys_manage.usersysmanagement.param.UserParam;



/**
 * 
 * Description: 
 * Author: linfangan
 * Version: 1.0
 * Create Date Time: 2017年8月13日 下午2:31:06.
 * Update Date Time: 
 * @see
 */
@Repository("userDao")
public interface UserDao {
	
	//List<Integer> findUserByDeptNo(String dept_no);
	
	/**
	 * 根据用户账号查询用户id
	 * @param account
	 * @return
	 */
	public User findUserByAccount(String account);
	/**
	 * 增加用户信息
	 * @param user 增加的用户信息
	 * @return 增加成功返回1
	 */
	public int addUser(NewUser user);
	
//	/**
//	 * 将sha_id更新并加密
//	 * @param userId 用户id
//	 * @return 成功返回1
//	 */
//	public int updateUserShaId(User user);
	
	/**
	 * 根据id查询accountt
	 * @param id 用户id
	 * @return account 用户账号
	 */
	public String findAccountByUserId(
			@Param("id")String id,
			@Param("org_id")String org_id);
	
	
	
//	/**
//	 * 查询所有的account
//	 * @return account集合
//	 */
//	public List<String> findAllAccount();
	
//	/**
//	 * 查询用户名称
//	 * @param userId 用户id
//	 * @return 用户名称
//	 */
//	public String findUserNameByUserId(int userId);
	
	
	/**
	 * 根据用户id查询用户账户信息
	 * @param userId 用户id
	 * @return
	 */
	public UserResult findAllUserInfoByUserId(
			@Param("id")String id,
			@Param("org_id")String org_id);
	
	/**
	 * 修改用户信息
	 * @param user 修改的用户信息
	 * @return
	 */
	public int updateUser(NewUser user);
	
//	/**
//	 * 查询用户T_user表的所有信息
//	 * @return
//	 */
//	public List<Map<String,Object>> findAllUserInfo(
//			@Param("start") int start,
//			@Param("size") int size);
	
	/**
	 * 删除用户账户信息,多表
	 * @param userId 用户id
	 * @return
	 */
	public int deleteUserInfoByUserId(
			@Param("id")String id,
			@Param("org_id")String org_id);
	
//	/**
//	 * 删除用户信息，单表
//	 * @param id
//	 * @return
//	 */
//	public int deleteUserById(int id);
	
//	/**
//	 * 根据id查找时间
//	 * @param id
//	 * @return
//	 */
//	public Date findTimeById(int id);
	
//	/**
//	 * 根据id查询user表信息
//	 * @param id
//	 * @return
//	 */
//	public User selUserInfoByUserId(int id);
	
	
//	/**
//	 * 查询userId最大值
//	 * @param 
//	 * @return
//	 */
//	public int selUserIdMax();
	
//	/**
//	 * 查找所有用户信息
//	 * @return 所有用户信息(四表)的集合
//	 */
//	public List<User> selAllUserInfo();
	
	
	/**
	 * 批量删除账户信息，多表
	 * @param ids
	 * @return
	 */
	public int delBatchUser(
			@Param("list") List<String> list,
			@Param("org_id") String org_id);
	
	/**  c=测试
	 * 根据用户ID查询用户的所有信息  c=测试
	 * @return 包含用户所有信息的集合
	 */
	public List<Map<String,Object>> findUserAllInfoByAccount(String account);
	
	/**
	 * 数组参数查询用户信息
	 * @param Top_dept_no
	 * @param Dept_no
	 * @param Create_date
	 * @param Account
	 * @param Username
	 * @return
	 */
	public List<UserResult> findUserByArray(UserParam userParam);
	
	/**
	 * 根据用户id查询用户姓名
	 * @param id
	 * @return
	 */
	public String findUserNameByUserId(
			@Param("id")String id,
			@Param("org_id")String org_id);
	
	/**
	 * 查询101和102内的人员信息,本部门人员显示部门领导
	 * @return
	 */
	public List<UserInfo> findUserInfoByRoleUser(String dept_no);
	
	
	
	
	/**
	 * 查询101和102内的人员信息,为部门领导请假显示上级部门领导
	 * @return
	 */
	public List<UserInfo> findUserInfoByRoleUserByTop(String top_dept_no);
	
	
	
	/**
	 * 删除用户实际上是更新用户state状态
	 * @param id
	 * @return
	 */
	public int updateState(@Param("id")String id,
			@Param("org_id")String org_id);
	
	/**
	 * 批量删除用户实际上是批量更新用户state状态
	 * @param id
	 * @return
	 */
	public int arrUpdateState(@Param("list") List<String> list,
							@Param("org_id") String org_id);
	
	/**
	 * 批量删除用户实际上是批量更新用户state状态
	 * @param id
	 * @return
	 */
	public int arrUpdateState1(@Param("list") List<String> list,
							@Param("org_id") String org_id);
	
	/**
	 * 启用用户实际上是更新用户state状态
	 * @param id
	 * @return
	 */
	public int enabledState(@Param("id") String id,
			@Param("org_id") String org_id);
	
	
	/**
	 * 根据部门查询该部门下人员
	 * @return
	 */
	public List<UserInfoAccount> throwDeptFindUser(@Param("dept_no")String dept_no,
			@Param("org_id") String org_id);
	
	/**
	 * 查询101和102里面的全部领导
	 * @return
	 */
	public List<UserInfo> findAlleader(@Param("org_id") String org_id);
	
	/**
	 * 查询所有用户信息,排除角色为0的用户
	 * @return
	 */
	public List<UserInfoAccount> CxUserXinXi(@Param("org_id") String org_id);
	
	/**
	 * 查询所有用户信息,排除id为0的用户  包含名称的首字母，全拼音
	 * @return
	 */
	public List<Conver> conver(@Param("org_id") String org_id);
	
	
	/**
	 * 根据任务id查询任务信息
	 * @return
	 */
	public UserPart reasonIdfindUser(
			@Param("id") String id,
			@Param("org_id") String org_id);
	
	
	/**
	 * 查询所有用户信息
	 * @param userId 用户id
	 * @return
	 */
	public List<UserResult> allUserinfo(
			@Param("uOrg_id") String uOrg_id,
			@Param("state") String state);
	
	
	/**
	 * 修改用户信息2
	 * @param user 修改的用户信息2 lisuoding
	 * @return
	 */
	public int updateUser2(
			@Param("password") String password,
			@Param("id") String id,
			@Param("org_id") String org_id);
	
	/**
	 * 旧密码
	 * @param user 旧密码 lisuoding
	 * @return
	 */
	public String oldpassword(@Param("id") String id);
	
	/**
	 * 根据id查询用户信息  用于主页个人信息展示
	 * @param id 用户id
	 * @return
	 */
	public UserIndexResult indexUserInfo(String id);
	
	/**
	 * 更新用户头像 
	 * @param face
	 * @param id
	 * @return
	 */
	public int updateFace(
			@Param("face")String face,
			@Param("id")String id
		);
	
	/**
	 * 查询所有用户列表，用户添加用户权限
	 * @return
	 */
	public List<UserInfoAccount> findAllUserLine(
			@Param("org_id") String org_id,
			@Param("start") Integer start,
			@Param("limit") Integer limit,
			@Param("username") String username
			);
	
	
//	/**
//	 * 批量增加用户信息
//	 * @param user 增加的用户信息
//	 * @return 增加成功返回1
//	 */
//	public int addUserBatch(List<User> listUser);
	
	/*
	 * 重置该用户密码重置密码
	 * 
	 */
	public int restPassword(
			@Param("password")String password,
			@Param("id")String id,
			@Param("org_id")String org_id
			);
	
	
//	public int daup(
//			@Param("name_py_short")String name_py_short,
//			@Param("account")String account);
//	
//	
//	
//	public String selectPingy(String name);
//	
//	public List<UserInfoAccount> selectusername();
//	
//	public int user_py(@Param("name_py")String name_py,
//			@Param("name_py_first")String name_py_first,
//			@Param("account")String account);
	
	/**
	 * 用户查询列表统计
	 * @param userParam
	 * @return
	 */
	public String findUserArrayCount(UserParam userParam);
	
	/**
	 * 统计用户列表人数
	 * @param org_id
	 * @return
	 */
	public String findUserLineCount(
			@Param("org_id") String org_id,
			@Param("username") String username
			);
	
	//统计用户  liket
	String userCount(String org_id);
	
	
	/**
	 * 用于user查询多条件动态查询多表 将已经是党员的用户排除在外
	 * @param Top_dept_no
	 * @param Dept_no
	 * @param Create_date
	 * @param Account
	 * @param Username
	 * @return
	 */
	public List<UserResult> findUserByArrayNotInPartyUser(UserParam userParam);
	
	/**
	 * 用于user查询多条件动态查询多表 将已经是党员的用户排除在外 统计
	 * @param userParam
	 * @return
	 */
	public String findUserByArrayNotInPartyUserCount(UserParam userParam);
	
	
	
}
